/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package models;

/**
 *
 * @author 40800431
 */
public class Projeto {

    

    private String nome;
    private String descricao;
    private String status;
    private models.Cliente cliente;
    private int id;

    public Projeto(){}
    
    public Projeto(String nomeProjeto){
        this.load(nomeProjeto);
    }
    
    public Projeto(int idProjeto){
        this.load(idProjeto);
    }
    
    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the descricao
     */
    public String getDescricao() {
        return descricao;
    }

    /**
     * @param descricao the descricao to set
     */
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    /**
     * @return the status
     */
    public String getStatus() {
        return status;
    }

    /**
     * @param status the status to set
     */
    public void setStatus(String status) {
        this.status = status;
    }

    /**
     * @return the cliente
     */
    public models.Cliente getCliente() {
        return cliente;
    }

    /**
     * @param cliente the cliente to set
     */
    public void setCliente(models.Cliente cliente) {
        this.cliente = cliente;
    }
    
    public static String[] listAllAsArray() {
        
        Database db = new Database();
        String[] projectList;
        db.connect();
        
        int rowCount = 0;
                
        try {
            db.query("SELECT count(*) FROM Projetos");
            db.res.next();
            rowCount = db.res.getInt(1);
            
            db.query("SELECT nome FROM Projetos ORDER BY nome");
        
            projectList = new String[rowCount];
            for(int i = 0; i < rowCount; i++){
                db.res.next();
                projectList[i] = db.res.getString("nome");
            }

            db.disconnect();
            
            return projectList;
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return null;
    }

    public boolean insert() {
        String queryString = "INSERT INTO Projetos (nome, descricao, status, cliente) VALUES ";
        queryString += "('" + this.nome + "', '" + this.descricao + "', '" + this.status + "', " + this.cliente.getId() + " )";
        
        Database db = new Database();
        db.connect();
        int projetoId = db.executeUpdate(queryString);
        db.disconnect();
        
        this.setId(projetoId);
        
        return true;
    }

    public void setId(int projetoId) {
        this.id = projetoId;
    }
    
    public int getId(){
        return this.id;
    }

    public void load(String projectName) {
        String sqlQuery = "SELECT * FROM Projetos WHERE nome = '" + projectName + "' LIMIT 1";
        
        Database db = new Database();
        db.connect();
        db.query(sqlQuery);
        
       try{
            db.res.next();
            this.setId(db.res.getInt("id_projeto"));
            this.setNome(db.res.getString("nome"));
            this.setDescricao(db.res.getString("descricao"));
            this.setCliente(new Cliente(db.res.getInt("cliente")));
            this.setStatus(db.res.getString("status"));
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            db.disconnect();
        }
    }
    
    public void load(int projectId) {
        String sqlQuery = "SELECT * FROM Projetos WHERE id_projeto = '" + projectId + "' LIMIT 1";
        
        Database db = new Database();
        db.connect();
        db.query(sqlQuery);
        
       try{
            db.res.next();
            this.setId(db.res.getInt("id_projeto"));
            this.setNome(db.res.getString("nome"));
            this.setDescricao(db.res.getString("descricao"));
            this.setCliente(new Cliente(db.res.getInt("cliente")));
            this.setStatus(db.res.getString("status"));
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            db.disconnect();
        }
    }
    
}
